define(['jquery', 'bootstrap', 'backend', 'form', 'table'], function ($, undefined, Backend, Form, Table) {

	var Controller = {
		index : function () {

			// 初始化表格参数配置
			Table.api.init({
				extend : {
					index_url : 'qingdongams/department/staff/index',
					add_url   : 'qingdongams/department/staff/add',
					edit_url  : 'qingdongams/department/staff/edit',
					del_url   : 'qingdongams/department/staff/del',
					table     : 'staff'
				}
			});

			var table = $("#table");

			// 初始化表格
			table.bootstrapTable({
				url               : $.fn.bootstrapTable.defaults.extend.index_url,
				sortName          : 'id',
				fixedColumns : true,
				fixedRightNumber:1,
				columns           : [
					[
						{checkbox : true},
						{field : 'name', title : __('姓名')},
						{field : 'img', title : __('头像'), events : Table.api.events.image, formatter : Table.api.formatter.image, operate : false},
						{field : 'num', title : __('员工编号')},
						{field : 'email', title : __('邮箱')},
						{field : 'mobile', title : __('手机号码')},
						{field : 'sex', title : __('性别'),operate:false, formatter : Table.api.formatter.status, searchList : {0 : __('未知'),1 : __('男'), 2 : __('女')}},
						{field : 'post', title : __('岗位'),operate:false},
						{field : 'staffrole.name', title : __('角色'), operate : false},
						{field : 'role', title : __('角色'), visible: false, searchList : $.getJSON("qingdongams/department/staff/getstaffrole")},
						{field : 'parent_name', title : __('直属上级'),operate:false},
						{field : 'admin.username', title : __('绑定后台账号'),operate:false},
						{field : 'status', title : __('状态'), formatter : Table.api.formatter.status, searchList : {0 : __('审核中'), 1 : __('正常'),2:'禁用'}},
						{field : 'createtime', title : __('创建时间'), formatter : Table.api.formatter.datetime, operate : 'RANGE', addclass : 'datetimerange', sortable : true},
						{
							field     : 'operate',
							title     : __('Operate'),
							table     : table,
							events    : Table.api.events.operate,
							formatter : Table.api.formatter.operate,
							buttons   : [
								{
								    name: '禁用',
								    text: __('禁用'),
								    classname: 'btn-xs  btn-ajax',
								    url: 'qingdongams/department/staff/update_status/status/2',
								    refresh: true,
									confirm: '确认要禁用当前员工吗',
									hidden:function (row) {
										if(row.status == 1){
											return false;
										}
										return true;
									}
								},
								{
									name: '启用',
									text: __('启用'),
									classname: 'btn-xs btn-ajax',
									url: 'qingdongams/department/staff/update_status/status/1',
									refresh: true,
									confirm: '确认要启用当前员工吗',
									hidden:function (row) {
										if(row.status == 1){
											return true;
										}
										return false;
									}
								},

							]
						}
					]
				],
				search            : false,
				//启用普通表单搜索
				commonSearch      : true,
				searchFormVisible : false,
				onLoadSuccess:function(){
					// 这里就是数据渲染结束后的回调函数
					$('.btn-editone').html('编辑');
					$('.fa-pencil').remove();
					$('.btn-delone').html('删除');
					$('.fa-trash').remove();
					$('.btn-editone').removeClass('btn-success')
					$('.btn-editone').removeClass('btn')
					$('.btn-delone').removeClass('btn')
					$('.btn-delone').removeClass('btn-danger')
				}
			});

			// 为表格绑定事件
			Table.api.bindevent(table);

		},

		add           : function () {
			$('#myPopover').popover();
			$('#roles').popover();
			Controller.api.bindevent();
		},
		edit          : function () {
			$('#myPopover').popover();
			$('#roles').popover();
			Controller.api.bindevent();
		},
		staff_examine : function () {
			// 初始化表格参数配置
			Table.api.init({
				extend : {
					index_url : 'qingdongams/department/staff/staff_examine',
					table     : 'staff_examine'
				}
			});

			var table = $("#table");

			// 初始化表格
			table.bootstrapTable({
				url               : $.fn.bootstrapTable.defaults.extend.index_url,
				sortName          : 'id',
				columns           : [
					[
						{checkbox : true},
						{field : 'nickname', title : __('昵称'), operate : false},
						{field : 'name', title : __('姓名')},
						{field : 'img', title : __('头像'), events : Table.api.events.image, formatter : Table.api.formatter.image, operate : false},
						{field : 'num', title : __('员工编号'), operate : false},
						{field : 'email', title : __('邮箱'), operate : false},
						{field : 'mobile', title : __('手机号码'), operate : false},
						{field : 'sex', title : __('性别'), formatter : Table.api.formatter.status, searchList : {0 : __('未知'),1 : __('男'), 2 : __('女')}},
						{field : 'post', title : __('岗位'), operate : false},
						{field : 'createtime', title : __('创建时间'), formatter : Table.api.formatter.datetime, operate : 'RANGE', addclass : 'datetimerange', sortable : true},
						{
							field     : 'operate',
							title     : __('Operate'),
							table     : table,
							events    : Table.api.events.operate,
							formatter : Table.api.formatter.operate,
							buttons   : [
								{
									name      : '审核通过',
									text      : __('审核通过'),
									classname : 'btn btn-info btn-xs btn-detail btn-dialog',
									url       : 'qingdongams/department/staff/examine',
									refresh   : true
								},
								{
									name      : '审核拒绝',
									text      : __('审核拒绝'),
									classname : 'btn btn-xs btn-danger btn-ajax',
									confirm: '确认审核拒绝',
									url       : 'qingdongams/department/staff/del',
									refresh   : true
								}
							]
						}
					]
				],
				search            : false,
				//启用普通表单搜索
				commonSearch      : false,
				searchFormVisible : false,
			});

			// 为表格绑定事件
			Table.api.bindevent(table);

		},
		examine          : function () {
			Controller.api.bindevent();
		},
		api           : {
			bindevent : function () {
				$(document).on('change','[name="row[role]"]',function (data) {
					if($('[name="row[role]"]').val() == 2){
						$('#rules').show();
					}else{
						$('#rules').hide();
					}
				});
				$('[name="row[role]"]').trigger('change');
				Form.api.bindevent($("form[role=form]"));
			},

			formatter : {},
		}

	};
	return Controller;
});